package com.cskaoyan.javase.string._1notvariable;

import org.junit.Test;

/**
 * 不可变对象的概念:
 * 在Java中,一个对象被创建出来以后,除非销毁它,否则该对象的状态永远不变,这就是不可变对象.
 * 这里的对象状态不可变会更加严格,指:
 *      1.对象中的基本数据类型成员变量的取值不可变
 *      2.对象中引用数据类型成员变量的引用不能指向新的对象
 *      3.对象中引用数据类型成员变量的引用指向的对象也是一个不可变对象
 *
 * String是Java中最典型的不可变对象,它的对象一旦被创建,除非销毁,否则状态永远不变.
 *
 * @since 09:46
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    @Test
    public void test() {
        String str = "123";
        System.out.println(str + "456");
    }

    @Test
    public void test2() {
        String str = "张三";
        concatString(str);
        System.out.println(str);
    }

    // 方法可以改变对象的状态,但如果对象是不可变对象,改变状态就会创建一个新的对象,这时方法就不能改变对象状态
    public static void concatString(String str) {
        str = str + "666";
    }
}
